home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 2010 April / PCWorld0410.iso / redakcyjne / programy / Tlen 6.0.1.12 pl / tleninst60112.exe / sdk / Plugin_src / soundevents-vc / demoplugin.cpp < prev    next >
C/C++ Source or Header  |  2006-09-18  |  3KB  |  158 lines

  1. // demoplugin.cpp : Defines the entry point for the DLL application.
  2. //
  3.  
  4. #include "stdafx.h"
  5. #include "..\..\TlenSources\plugin\plugin_struct.h"
  6. #include "..\..\TlenSources\plugin\plugin_sound_events.h"
  7. #include "AggressiveOptimize.h"
  8. #include "resource.h"
  9. #include <stdlib.h>
  10. #include <stdio.h>
  11.  
  12. HINSTANCE hInst;
  13. TLENPLUGINFUNCTIONS *tlen_functions;
  14. HWND window = NULL;
  15. HANDLE soundHook;
  16.  
  17. TLENPLUGININFO pluginInfo={
  18.     sizeof(TLENPLUGININFO),
  19.     "Sound events demo",
  20.     PLUGIN_API_VERSION,
  21.     MAKE_DWORD_VERSION(1,0,0,0),
  22.     "Demonstracja funkcji i zdarze± dƒwiΩkowych",
  23.     "⌐ Prawa autorskie",
  24.     "Producent",
  25.     "E@mail",
  26.     "http://www",
  27.     0,
  28.     0,
  29.     0,        
  30.     0        
  31. };
  32.  
  33. extern "C" __declspec(dllexport) TLENPLUGININFO* GetPluginInfo(DWORD TlenVersion);
  34. extern "C" __declspec(dllexport) int LoadPlugin(TLENPLUGINFUNCTIONS *tlen_functions);
  35. extern "C" __declspec(dllexport) int UnloadPlugin(void);
  36.  
  37. LRESULT CALLBACK WindowProc(HWND hWnd, UINT message, WPARAM wparam, LPARAM lParam)
  38. {
  39.     switch (message) 
  40.     {
  41.         case WM_INITDIALOG:
  42.         {    
  43.             ShowWindow(hWnd, SW_SHOW);
  44.             UpdateWindow(hWnd);
  45.             return TRUE;
  46.         }
  47.         case WM_DESTROY:
  48.         {
  49.             window = NULL;
  50.             break;
  51.         }
  52.         case WM_CLOSE:
  53.         {
  54.             DestroyWindow(hWnd);
  55.             break;
  56.         }
  57.         case WM_COMMAND:
  58.         {
  59.          static int value;
  60.          switch (LOWORD(wparam))
  61.          {
  62.             case IDC_BUTTON1:
  63.             {
  64.                 SoundEventDef sdef;
  65.                 InitializeStruct(sdef);
  66.                 sdef.EventCode = GetDlgItemInt(window, IDC_EDIT2, NULL, FALSE);
  67.                 tlen_functions->CallTlenFunction(hInst, TLEN_SOUNDENGINE_PLAYSOUND, (WPARAM) &sdef, NULL);
  68.                 break;
  69.             }
  70.          }
  71.  
  72.          break;
  73.         }
  74.     }
  75.  
  76.     return 0;
  77. }
  78.  
  79. void AddTextToWindow(char *text, int len)
  80. {
  81.  HWND hw = GetDlgItem(window, IDC_EDIT1);
  82.  int length = GetWindowTextLength(hw);
  83.  char *buf = (char *) malloc(length + len + 100);
  84.  buf[length] = '\0';
  85.  GetWindowText(hw, buf, length + 1);
  86.  strcat(buf, "\r\n");
  87.  
  88.  strcat(buf, text);
  89.  SetWindowText(hw, buf);
  90.  free(buf);
  91.  SendMessage(hw, EM_SETSEL, GetWindowTextLength(hw), GetWindowTextLength(hw));
  92.  SendMessage(hw, EM_SCROLLCARET, 0, 0);
  93.  
  94. }
  95.  
  96. static int SoundEvent(WPARAM wparam, LPARAM lparam)
  97. {
  98.   SoundEventDef *def = (SoundEventDef *) wparam;
  99.  
  100.   char buf[1024];
  101.    
  102.    sprintf(buf, "Event code: %d ", def->EventCode);
  103.  
  104.    if (def->Contact) 
  105.    { 
  106.     if (def->Contact->ContactID)
  107.     {
  108.      strcat(buf, def->Contact->ContactID);
  109.      strcat(buf, " ");
  110.     }
  111.     if (def->Contact->ProtocolID)
  112.     {
  113.      strcat(buf, def->Contact->ProtocolID);
  114.      strcat(buf, " ");
  115.     }
  116.    }
  117.  
  118.    if (def->WaveFile)
  119.    {
  120.     strcat(buf, def->WaveFile);
  121.    }
  122.  
  123.   AddTextToWindow(buf, strlen(buf));
  124.  
  125.  
  126.   //Gdyby£my nie chcieli aby tlen odgrywa│ ten dƒwiΩk, zwracamy nie-zero
  127.   return 0;
  128. }
  129.  
  130. BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved)
  131. {
  132.     hInst=hinstDLL;
  133.     return TRUE;
  134. }
  135.  
  136. __declspec(dllexport) TLENPLUGININFO* GetPluginInfo(DWORD tlenVersion)
  137. {
  138.     return &pluginInfo;
  139. }
  140.  
  141. __declspec(dllexport) int LoadPlugin(TLENPLUGINFUNCTIONS *functions)
  142. {
  143.     tlen_functions = functions;
  144.  
  145.     window = CreateDialog(hInst, MAKEINTRESOURCE(IDD_DIALOG1), NULL, (DLGPROC) WindowProc);
  146.  
  147.     soundHook= (HANDLE) tlen_functions->HookTlenEvent(hInst, TLEN_SOUNDENGINE_BEFOREEVENT, SoundEvent);
  148.  
  149.     return 0;
  150. }
  151.  
  152. __declspec(dllexport) int UnloadPlugin(void)
  153. {
  154.     tlen_functions->UnhookTlenEvent(hInst, soundHook);
  155.     if (window) DestroyWindow(window);
  156.     return 0;
  157. }
  158.